In addition to the advantages related to customer access that are provided by the Internet, the ability of business users to access crucial business information has been greatly enhanced by the use of IP-based networking together with advances in object oriented Web-based programming and browser technology. Using these advances, systems have been developed that permit web-based access to business information systems, thereby allowing a user with a browser and an Internet or intranet connection to view, enter, or modify business information. For example, substantial efforts have been directed to Enterprise Resource Planning (ERP) systems that integrate the capabilities of several historically separate business computing systems into a common system, with a goal of streamlining business processes and increasing efficiencies on a business-wide level. By way of example, the capabilities or modules of an ERP system may include one or more of: accounting, order processing, time and billing, inventory management, employee management/payroll, and employee calendaring and collaboration, as well as reporting and analysis capabilities relating to these functions.
Substantial efforts have also been directed to integrated Customer Relationship Management (CRM) systems, with a goal of obtaining a better understanding of customers, enhancing service to existing customers, and acquiring new, profitable customers. By way of example, the capabilities or modules of a CRM system may include one or more of: sales force automation (SFA), marketing automation, contact list management, call center support, and web-based customer support, as well as reporting and analysis capabilities relating to these functions. With differing levels of overlap with ERP/CRM initiatives and with each other, efforts have also been directed toward development of increasingly integrated partner and vendor management systems, eCommerce platforms, product lifecycle management (PLM) systems, and supply chain management (SCM) systems.
One computing and/or data processing architecture that may be used to enable user access to ERP, CRM, and other business information systems is a cloud-based platform or network. Such a platform or network is typically comprised of multiple servers that are capable of running one or more business related applications. Some cloud-based service platforms are multi-tenant, meaning that they are capable of providing access to one or more business related applications (and the associated data) by more than one business entity or sets of users. The service platform may thus provide a system or suite of functionality that is used by the tenants to provide benefits to their respective users (which may be employees of a tenant, customers of a tenant, etc.). For example, the tenants may include business enterprises that use the service platform to provide various business functions to their employees and/or customers.
In an effort to permit tenants to access the services and functionality that they desire (which may include providing certain services to their end customers, such as an eCommerce platform), a multi-tenant service platform may permit a tenant to configure certain aspects of the available service(s) to better suit their business needs. In this way the service platform may be customizable, and thereby enable a tenant to configure the platform to provide distinctive services to their respective users or to groups of those users. For example, a business enterprise that uses the service platform may want to provide specific functions or capabilities to their employees and/or customers.
Tenant customization may include custom functionality (such as the capability to perform tenant or user-specific functions, data processing, or operations) built on top of lower level operating system functions. Some multi-tenant service platforms may offer the ability to customize functions or operations at a number of different levels of the service platform, from aesthetic modifications to a graphical user interface to providing integration of components and/or entire applications developed by independent third party vendors. This can be very beneficial, since by permitting use of components and/or applications developed by third party vendors, a multi-tenant service can significantly enhance the functionality available to tenants.
However, customizations introduced into the platform architecture by different tenants may be incompatible with each other in one or more ways, and this can cause a disruption in the services provided to those or other tenants. For example, such incompatibilities can cause undesirable and/or unintended behavior in the service configurations of multiple tenants, including tenants not associated with a particular customization. Certain types of customizations may also impact the operation of the platform in general, such as by altering the manner in which data is accessed or processed. This could have a negative impact on tenants beyond just those who had introduced or accessed a particular customization or extension.
Conventional approaches to managing potential problems arising from customizations and/or extensions to multi-tenant platform functionality are inefficient, ineffective and/or have undesirable side effects or other drawbacks with respect to at least one significant use case. Generally, such approaches may be categorized as either based on manual testing procedures, or automated testing procedures. Unfortunately, both of these general approaches may suffer from significant disadvantages. For example, manual system testing procedures are impractical for anything but the most trivial number or type of extensions. This is because for enterprise scale systems, testing of multiple extensions quickly encounters a problem due to the combinatorial “explosion.” For instance, with 10 extensions, there would be 90 extension pairs to be tested, 720 possible sets of three extensions, and so on. As is evident, as the number of extensions increases, manual testing quickly becomes too costly in terms of time and labor. The impracticality of implementing manual testing serves as an incentive for utilizing some form of automated testing. However, current systems do not support automatic verification of correctness, making automated testing of limited value.
As another example, an un-extended service platform may operate in a manner that acts to preserve a set of platform invariants and/or to respect a set of platform constraints (e.g., attribute value constraints). However, once certain types of extended functionality are introduced, the result may be that such invariants and/or constraints can no longer be relied upon. This can result in inefficiencies and create administrative problems for platform maintainers and developers, including 3rd party developers of platform extensions. It can also be the source of service malfunctions that can impact one or more tenants of the platform.
Embodiments of the invention are directed toward solving these and other problems individually and collectively.